/**
 * @file soft_timer_on.h
 * @author your name (you@domain.com)
 * @brief 软件定时器头文件
 * @version 0.1
 * @date 2025-04-10
 *
 * @copyright Copyright (c) 2025
 *
 */
#ifndef SOFT_TIMER_ON_H
#define SOFT_TIMER_ON_H

#include <stddef.h>
#include <stdint.h>

// 定义TON类型软定时器结构体
typedef struct {
    uint8_t* input;   // 输入信号（1=启动，0=停止）
    uint32_t count;   // 当前计数（单位：ms）
    uint32_t preset;  // 预设时间（单位：ms）
    uint8_t  output;  // 输出状态 (1=超时, 0=未超时)
    uint8_t  running; // 是否运行
} SoftTimerTON;

// 定义固定数量的定时器（TON1到TON20）
#define MAX_TIMER_ONS 20
extern SoftTimerTON TON1, TON2, TON3, TON4, TON5, TON6, TON7, TON8, TON9, TON10, TON11, TON12, TON13, TON14, TON15,
        TON16, TON17, TON18, TON19, TON20;

// 初始化所有定时器
void init_all_timers_on(void);

// 初始化硬件定时器（TIM2，1ms中断）
// void init_hardware_timer(void);

// 启动指定定时器
void start_timer_on(SoftTimerTON* timer);

// 停止指定定时器
void stop_timer_on(SoftTimerTON* timer);

// 更新所有定时器的状态_放到1ms中断服务中
void update_all_timer_on_state(void);

// 检查定时器输出状态
uint8_t is_timer_on_output(SoftTimerTON* timer);

#endif
